package es.deusto.eside.aike.laberinto;

import java.util.Map;
import java.util.TreeMap;

//La clase Casilla contiene la informacion relevante
//a una casilla como el tipo (el cual lleva consigo el coste),
//la posicion en coordenadas x e y, y por ultimo, los enlaces
// a otras casillas. Consideramos la y positiva
//hacia abajo en vez de hacia arriba(como el sistema de coordenadas
//de una pantalla)
public class Casilla
{
	private TipoCasilla tipoCasilla;
	private int coordenadaX;
	private int coordenadaY;
	private Map<Direccion,Casilla> enlaces;
	
	//Constructores
	public Casilla(TipoCasilla tipoCasilla, int coordenadaX, int coordenadaY)
	{
		this.tipoCasilla = tipoCasilla;
		this.coordenadaX = coordenadaX;
		this.coordenadaY = coordenadaY;
		enlaces = new TreeMap<Direccion,Casilla>();
	}
	
	public Casilla(Coordenada coordenada)
	{
		this.coordenadaX = coordenada.getX();
		this.coordenadaY = coordenada.getY();
		enlaces = new TreeMap<Direccion,Casilla>();
		this.tipoCasilla = TipoCasilla.normal;
	}
	
	//Get/Set de la clase
	public Coordenada getCoordenadas()
	{
		Coordenada coord = new Coordenada(coordenadaX,coordenadaY);
		return coord;
	}
	
	public void setTipoCasilla(TipoCasilla tipoCasilla)
	{
		this.tipoCasilla = tipoCasilla;
	}
	
	public void enlazar(Direccion direccion, Casilla casilla)
	{
		if(enlaces.containsKey(direccion))
			enlaces.remove(direccion);
		enlaces.put(direccion, casilla);		
	}

	public TipoCasilla getTipoCasilla() {
		return tipoCasilla;
	}

	public int getCoordenadaX() {
		return coordenadaX;
	}

	public void setCoordenadaX(int coordenadaX) {
		this.coordenadaX = coordenadaX;
	}

	public int getCoordenadaY() {
		return coordenadaY;
	}

	public void setCoordenadaY(int coordenadaY) {
		this.coordenadaY = coordenadaY;
	}

	public Map<Direccion, Casilla> getEnlaces() {
		return enlaces;
	}

	public void setEnlaces(Map<Direccion, Casilla> enlaces) {
		this.enlaces = enlaces;
	}
	
	
}
